interface IValidateOptions {}

// 支持的类型
type IValidatorPatterns = RegExp | 'phone' | 'username' | 'password' | 'email';

// 验证规则
type IValidateRule = {
	// 是否为必填
	required?: boolean;

	// 错误消息
	message?: string;

	// 类型
	pattern: IValidatorPatterns;

	// 验证参数数据
	params?: any[];

	// 成功回调
	success?: () => void;

	// 失败回调
	fail?: (message: string) => void;

	// 自定义验证放啊
	validator?: (
		data: any,
		rule: IValidateRule,
		callback: (error?: Error) => void,
	) => Promise<boolean>;
};

// 单个验证返回结果
type IValidateResult = {
	// 验证字段名称
	name: string;
	// 验证结果
	result: boolean;
	// 类型
	type?: 'required' | 'type' | 'validator' | 'regExp' | null;
	// 规则
	rule: IValidateRule | null;
	// 自定义验证错误内容
	validatorErrorMessage?: string;
};

export type {
	IValidateRule,
	IValidateResult,
	IValidateOptions,
	IValidatorPatterns,
};
